Getting started with Elixir: A comprehensive learning path

WTTJ Tech
Welcome Tech
Published in
12 min readOct 1, 2024

If you’re here, it means you’re probably curious about Elixir, that dynamic, functional language that’s great for building scalable and maintainable applications.

Whether you’re just getting started or looking to dive deeper, this learning path we’ve created at Welcome to the Jungle will hopefully help you along the way, especially if you’re interested in exploring awesome frameworks like Phoenix and Ecto.

Think of this as a roadmap to Elixir, not a strict course. It’s packed with tips and resources for key concepts that we think are important. Feel free to go at your own pace and explore what interests you most!

What you’ll learn

We start by getting you comfortable with Elixir’s syntax and the basics of functional programming. From there, we jump into Phoenix, which is perfect for building web applications, and Ecto, your go-to tool for managing databases. By the end, you’ll have the confidence to start building and deploying your own Elixir projects.

What to expect

This learning path is like a friendly tour through Elixir’s core ideas, with lots of resources and tips along the way. We’ve organized information into three levels, starting with the easiest and progressing to the hardest. We cover the key areas you should focus on, but remember, this is just one path — feel free to adapt it and follow the learning journey that resonates best with you.

Diagrams and resources

You’ll find some diagrams along the way to help you visualize the concepts at each stage. The resources we suggest are pretty flexible and can apply to multiple parts of your learning journey, so don’t worry if they don’t always line up exactly with the diagrams.

Concept levels

We’ve grouped concepts into different levels based on how tricky they are, but don’t let that stop you from exploring them earlier if you’re up for it. For example, abstract syntax trees (ASTs) are a big part of Elixir, but we’ve put them in level 3 because they’re a bit more complex. Just dive in whenever you’re ready!

How to contribute

We’d love your help to make this learning path even better! If you think we’ve missed something, have awesome resources to share, ideas to suggest, or updates to the diagrams, please go ahead and open a pull request on our repository. We’re all on this learning journey together!

What is Elixir?

Before we set out on our learning path, let’s take a look at the Elixir ecosystem as a whole.

The Elixir ecosystem

Elixir is a functional and concurrent programming language that runs on the Erlang virtual machine. It’s known for being super-reliable, which makes it perfect for building scalable applications. If you’re curious about what Elixir is all about, here are some great resources to get you started:

Functional programming

Elixir is a functional programming language that focuses on immutability and first-class functions. Getting a handle on these concepts is key — the below links will help:

  • Functional Programming 101 by Cassidy Williams: A great starting point for understanding functional programming.
  • What is functional programming | Easy way by Hitesh Choudhary: Check out this video for an easy-to-understand introduction to functional programming.
  • Grokking Simplicity by Eric Normand: A book that breaks down functional programming into easy-to-grasp ideas, showing you how to simplify your code and make it more manageable in real-world projects.

Why choose Elixir?

So, why pick Elixir? Well, it has a lively community, a strong ecosystem, and loads of advantages. For a deeper look, check out The Soul of Erlang and Elixir by Saša Jurić.

Global learning and tech watch resources

  • Official Elixir documentation: Your go-to resource for everything you need to know about Elixir’s features and functions.
  • Programming Elixir 1.6 by Dave Thomas: A practical book that takes you through Elixir programming with clear examples and exercises.
  • Elixir in Action by Saša Jurić: A hands-on guide that takes you through building real-world applications with Elixir.
  • Elixir School: A fantastic free resource to help you learn Elixir.
  • Exercism’s Elixir track: A site with puzzles and exercises to help you practice every Elixir concept. Its syllabus is great!
  • Alchemist Camp: A structured, hands-on approach to learning Elixir, with engaging video tutorials and real-world projects.
  • Joy of Elixir: A beginner-friendly online book that makes learning Elixir fun and approachable, using simple language, humor, and interactive examples.
  • Elixir Newbie: Learn Elixir with a friendly and approachable tone. There is also a podcast available.
  • 10 tips for new Elixir developers by Chris Gregori: Some valuable advice if you’re just starting out with Elixir.
  • CodeCast’s Intro to Elixir: A hands-on, video-driven introduction to Elixir, focusing on practical coding exercises and real-time feedback.
  • An Animated Introduction to Elixir by Mark Mahoney: A visually engaging and easy-to-follow introduction to Elixir.
  • Thinking Elixir podcast: A podcast that dives deep into Elixir’s ecosystem, featuring expert interviews, real-world examples, and practical advice.
  • Awesome Elixir: A curated list of useful Elixir resources and tools, including libraries, frameworks, tutorials, and best practices.
  • ElixirConf’s YouTube channel: Videos from ElixirConf, featuring talks from the community.
  • Welcome to the Jungle Tech Medium page: A range of in-depth articles that cover practical Elixir tutorials, case studies, and handy tips.
  • AppSignal’s blog: Posts and tips on Elixir performance and best practices.
  • ElixirWeekly: A curated newsletter that delivers the latest news, articles, and updates from the Elixir programming community.
  • ElixirStatus: Post your new project, blog post, or version update there.

Elixir cheat sheet

Keep this Elixir cheat sheet handy for quick reference when you need it.

Our Elixir learning path

Level 1: Elixir core concepts

Objective: Get a strong grip on Elixir’s syntax and functional programming basics.

Installing Elixir and running the IEx console

The asdf version manager

  • asdf: A versatile CLI tool that lets you manage multiple Elixir versions (along with other language runtimes) on a per-project basis.
  • Installing Elixir and Erlang with ASDF: A simple guide to setting up Elixir and Erlang using asdf.

IEx and compilation

Elixir style guides

Basics

Basic types and operators

  • Basic types: An overview of the fundamental data types in Elixir.
  • Basic operators: A rundown of the essential operators you’ll use in Elixir.
  • Basic Data Types by Elixir School: A friendly guide to understanding Elixir’s core data types and how to use them.

Immutability

Strings and binaries

Collections

Lists, tuples, maps, keywords

  • Collections by Elixir School: An easy-to-follow guide to Elixir’s different collection types and how to use them effectively.

List comprehension

  • Comprehensions: A friendly intro to using list comprehensions in Elixir for cleaner and more efficient data handling.

Enum modules

  • Enum by Elixir School: A helpful guide to using the Enum module in Elixir for working with collections.
  • Enumerables and Streams: A simple overview of Elixir’s tools for handling data with enumerables and streams.

Pattern matching

  • Pattern matching: A guide to mastering pattern matching in Elixir.
  • Pattern Matching by Elixir School: A great resource to get you up to speed with pattern matching basics and best practices.

Modules and functions

  • Modules and functions: Explore how Elixir uses modules and functions to keep your code organized and reusable.
  • Composition by Elixir School: A great guide to composing functions in Elixir, taking you through how to build up complex behavior from simpler pieces.

Functions (and anonymous functions)

  • Functions by Elixir School: A friendly rundown on how to create and use functions in Elixir, including those handy anonymous functions.

> Default function argument

  • Default arguments — Find out how to use default arguments in your functions to keep things tidy and flexible.
  • Default Arguments by Elixir School: Helpful information about how default arguments work in Elixir.

> Functions and pattern matching

Structs

  • Structs: Learn how to use structs to manage and organize complex data in Elixir.

Guard conditions

  • Guards: Get the scoop on guard clauses and how they add extra conditions to your pattern matching.

Control structures

  • Case, cond, and if: A guide to Elixir’s control structures for making decisions in your code.
  • Control Structures by Elixir School: A simple overview of Elixir’s control structures.

IO and files

Debugging

Level 2: Phoenix, Ecto, and OTP basics

Objective: Mix your Elixir skills with web development and database management for a complete setup.

The Mix build tool

  • Mix by Elixir School: A guide to using Mix for managing projects and tasks.
  • Introduction to Mix: A quick intro to Mix and how it helps you with Elixir projects.

Errors and exceptions

  • try, catch, and rescue: Learn how to handle errors and exceptions in Elixir with these handy techniques.
  • Error Handling by Elixir School: A guide to managing errors and exceptions to keep your Elixir code running smoothly.

Testing your code

Configuration and releases

Erlang with Elixir

  • Erlang Interoperability by Elixir School: Discover how Elixir and Erlang work together and how to use Erlang libraries in your Elixir projects.

OTP basics

The Phoenix web framework

The Ecto database library

  • Ecto’s official repository: The central hub for Ecto’s source code, issues, and updates.
  • Ecto documentation: Everything you need to know about using Ecto for database interactions.
  • Ecto: An Introduction to Elixir’s Database Toolkit by Gints Dreimanis: A guide to getting started with Ecto.
  • Lessons: Ecto by Elixir School: A helpful set of lessons on how to use Ecto for database operations and queries.
  • A brief guide to Ecto.Multi by Elixir School: A quick overview of how to use Ecto.Multi for running multiple database operations in a single transaction.
  • Ecto.Multi: The official documentation for Ecto.Multi, showing how to manage complex database transactions.
  • Dynamic queries: Learn how to build and manage dynamic queries with Ecto to make your data operations more flexible.
  • Programming Ecto by Darin Wilson and Eric Meadows-Jönsson: A guide that dives into using Ecto for managing your database in Elixir.

Level 3: Advanced topics (OTP, Metaprogramming, security)

Objective: Get the hang of advanced features and tools to build super-fast and efficient applications.

Processes (spawning, links, tasks, etc.)

Supervisors

The abstract syntax tree (AST)

Advanced testing

  • Mocks and explicit contracts by José Valim: Learn about advanced testing techniques in Elixir, including how to use mocks and how to define explicit contracts for your functions.

Security

Other resources

For deeper learning about related topics, consider these reads:

Communities

Join Elixir forums and communities to stay connected and learn from others:

Engage with the community to grow your Elixir skills!

Apply without fear!

At Welcome to the Jungle, we’re hiring backend developers who are passionate and curious, regardless of their current tech stack or degree. If you are hired, we will train you on Elixir! We want to ensure that our employees are well-equipped with the skills and knowledge necessary to succeed. That’s why we offer a comprehensive training program to all new backend engineers hires, so they can hit the ground running.

Ready to jump in? Apply now!

Written by Anne-Laure Civeyrac, Tech editor, based on the learning path developed by backend developers.

Illustration by WTTJ

Join our team!

--

--

Welcome Tech
Welcome Tech

Published in Welcome Tech

This is the Welcome to the Jungle tech blog, where you’ll find articles about the machinery behind our Elixir/React applications and how we come up with our most creative designs, details of the latest releases of our open-source libraries, and much more!